//package com.example.togethermove.utils.wechat;
//
//import android.content.Context;
//import android.graphics.Bitmap;
//import android.graphics.Bitmap.CompressFormat;
//import android.graphics.BitmapFactory;
//import android.graphics.Canvas;
//import android.graphics.Matrix;
//import android.graphics.Paint;
//import android.os.Build;
//import android.os.Environment;
//import android.util.Log;
//
//
//
//
//import java.io.ByteArrayOutputStream;
//import java.io.File;
//import java.io.FileOutputStream;
//import java.io.IOException;
//import java.io.InputStream;
//import java.io.RandomAccessFile;
//import java.net.HttpURLConnection;
//import java.net.MalformedURLException;
//import java.net.URL;
//import java.net.URLConnection;
//
///**
// * @author peishuaihui
// * @data
// */
//public class WechatUtil {
//
//    private static final String TAG = "SDK_Sample.Util";
//
//    public static byte[] bmpToByteArray(final Bitmap bmp, final boolean needRecycle) {
//        ByteArrayOutputStream output = new ByteArrayOutputStream();
//        bmp.compress(CompressFormat.PNG, 100, output);
//
//        int options = 100;
//        while (output.toByteArray().length > 32 * 1024 && options != 10) {
//            output.reset(); //清空output
//            bmp.compress(CompressFormat.JPEG, options, output);//这里压缩options%，把压缩后的数据存放到output中
//            options -= 10;
//        }
//        if (needRecycle) {
//            bmp.recycle();
//        }
//
//        byte[] result = output.toByteArray();
//        try {
//            output.close();
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//
//        return result;
//    }
//
//    public static byte[] getHtmlByteArray(final String url) {
//        URL htmlUrl = null;
//        InputStream inStream = null;
//        try {
//            htmlUrl = new URL(url);
//            URLConnection connection = htmlUrl.openConnection();
//            HttpURLConnection httpConnection = (HttpURLConnection)connection;
//            int responseCode = httpConnection.getResponseCode();
//            if(responseCode == HttpURLConnection.HTTP_OK){
//                inStream = httpConnection.getInputStream();
//            }
//        } catch (MalformedURLException e) {
//            e.printStackTrace();
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        byte[] data = inputStreamToByte(inStream);
//
//        return data;
//    }
//
//    public static byte[] inputStreamToByte(InputStream is) {
//        try{
//            ByteArrayOutputStream bytestream = new ByteArrayOutputStream();
//            int ch;
//            while ((ch = is.read()) != -1) {
//                bytestream.write(ch);
//            }
//            byte imgdata[] = bytestream.toByteArray();
//            bytestream.close();
//            return imgdata;
//        }catch(Exception e){
//            e.printStackTrace();
//        }
//
//        return null;
//    }
//
//    public static byte[] readFromFile(String fileName, int offset, int len) {
//        if (fileName == null) {
//            return null;
//        }
//
//        File file = new File(fileName);
//        if (!file.exists()) {
//            Log.i(TAG, "readFromFile: file not found");
//            return null;
//        }
//
//        if (len == -1) {
//            len = (int) file.length();
//        }
//
//        Log.d(TAG, "readFromFile : offset = " + offset + " len = " + len + " offset + len = " + (offset + len));
//
//        if(offset <0){
//            Log.e(TAG, "readFromFile invalid offset:" + offset);
//            return null;
//        }
//        if(len <=0 ){
//            Log.e(TAG, "readFromFile invalid len:" + len);
//            return null;
//        }
//        if(offset + len > (int) file.length()){
//            Log.e(TAG, "readFromFile invalid file len:" + file.length());
//            return null;
//        }
//
//        byte[] b = null;
//        try {
//            RandomAccessFile in = new RandomAccessFile(fileName, "r");
//            b = new byte[len];
//            in.seek(offset);
//            in.readFully(b);
//            in.close();
//
//        } catch (Exception e) {
//            Log.e(TAG, "readFromFile : errMsg = " + e.getMessage());
//            e.printStackTrace();
//        }
//        return b;
//    }
//
//    private static final int MAX_DECODE_PICTURE_SIZE = 1920 * 1440;
//    public static Bitmap extractThumbNail(final String path, final int height, final int width, final boolean crop) {
////        Assert.assertTrue(path != null && !path.equals("") && height > 0 && width > 0);
//
//        BitmapFactory.Options options = new BitmapFactory.Options();
//
//        try {
//            options.inJustDecodeBounds = true;
//            Bitmap tmp = BitmapFactory.decodeFile(path, options);
//            if (tmp != null) {
//                tmp.recycle();
//                tmp = null;
//            }
//
//            Log.d(TAG, "extractThumbNail: round=" + width + "x" + height + ", crop=" + crop);
//            final double beY = options.outHeight * 1.0 / height;
//            final double beX = options.outWidth * 1.0 / width;
//            Log.d(TAG, "extractThumbNail: extract beX = " + beX + ", beY = " + beY);
//            options.inSampleSize = (int) (crop ? (beY > beX ? beX : beY) : (beY < beX ? beX : beY));
//            if (options.inSampleSize <= 1) {
//                options.inSampleSize = 1;
//            }
//
//            // NOTE: out of memory error
//            while (options.outHeight * options.outWidth / options.inSampleSize > MAX_DECODE_PICTURE_SIZE) {
//                options.inSampleSize++;
//            }
//
//            int newHeight = height;
//            int newWidth = width;
//            if (crop) {
//                if (beY > beX) {
//                    newHeight = (int) (newWidth * 1.0 * options.outHeight / options.outWidth);
//                } else {
//                    newWidth = (int) (newHeight * 1.0 * options.outWidth / options.outHeight);
//                }
//            } else {
//                if (beY < beX) {
//                    newHeight = (int) (newWidth * 1.0 * options.outHeight / options.outWidth);
//                } else {
//                    newWidth = (int) (newHeight * 1.0 * options.outWidth / options.outHeight);
//                }
//            }
//
//            options.inJustDecodeBounds = false;
//
//            Log.i(TAG, "bitmap required size=" + newWidth + "x" + newHeight + ", orig=" + options.outWidth + "x" + options.outHeight + ", sample=" + options.inSampleSize);
//            Bitmap bm = BitmapFactory.decodeFile(path, options);
//            if (bm == null) {
//                Log.e(TAG, "bitmap decode failed");
//                return null;
//            }
//
//            Log.i(TAG, "bitmap decoded size=" + bm.getWidth() + "x" + bm.getHeight());
//            final Bitmap scale = Bitmap.createScaledBitmap(bm, newWidth, newHeight, true);
//            if (scale != null) {
//                bm.recycle();
//                bm = scale;
//            }
//
//            if (crop) {
//                final Bitmap cropped = Bitmap.createBitmap(bm, (bm.getWidth() - width) >> 1, (bm.getHeight() - height) >> 1, width, height);
//                if (cropped == null) {
//                    return bm;
//                }
//
//                bm.recycle();
//                bm = cropped;
//                Log.i(TAG, "bitmap croped size=" + bm.getWidth() + "x" + bm.getHeight());
//            }
//            return bm;
//
//        } catch (final OutOfMemoryError e) {
//            Log.e(TAG, "decode bitmap failed: " + e.getMessage());
//            options = null;
//        }
//
//        return null;
//    }
//
//    public static Bitmap checkBitmapScale(Bitmap bitmap, int requireWidth, int requireHeight) {
//        if (bitmap == null)
//            return null;
//        float scale = Math.min(requireWidth * 1.0f / bitmap.getWidth(), requireHeight * 1.0f / bitmap.getHeight());
//        Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, (int) (bitmap.getWidth() * scale), (int) (bitmap.getHeight() * scale), true);
//        return scaledBitmap;
//    }
//
//    public static Bitmap checkBitmap(Bitmap bitmap, int requireSize) {
//        if (bitmap == null)
//            return null;
//        int cuSize = getBitmapSize(bitmap);
//        if (cuSize < requireSize)
//            return bitmap;
//        float scale = (float) Math.sqrt((requireSize - 500) * 1.0f / cuSize);
//        Bitmap output = Bitmap.createBitmap((int) (bitmap.getWidth()*scale), (int) (bitmap.getHeight()*scale), Bitmap.Config.ARGB_8888);
//        Canvas canvas = new Canvas(output);
//        Matrix matrix = new Matrix();
//        matrix.setScale(scale, scale);
//        canvas.drawBitmap(bitmap, matrix, new Paint());
//        return output;
//
//
//
////        Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, (int) (bitmap.getWidth() * scale), (int) (bitmap.getHeight() * scale), true);
////        return scaledBitmap;
//
//    }
//
//    public static int getBitmapSize(Bitmap bitmap) {
//        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
//            return bitmap.getAllocationByteCount();
//        } else {
//            return bitmap.getByteCount();
//        }
//    }
//
//    public static String createWeShareFile(Context context, Bitmap bitmap) {
////        String storePath = getDiskCacheDir(context) + File.pathSeparator + "shareImages";
////        String storePath = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + context.getString(R.string.app_name) + File.separator + "cache" + File.separator + "wechatShare";
//        String storePath = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "thpj" + File.separator + "shareImages";
//        File imgDir =new File(storePath);
//        if (!imgDir.exists())
//            imgDir.mkdirs();
//            File file = new File(imgDir, TimeUtil.getTimeStr() + ".jpg");
//        try {
//            FileOutputStream fos = new FileOutputStream(file);
//            bitmap.compress(CompressFormat.JPEG, 60, fos);
//            fos.flush();
//            fos.close();
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        return file.getAbsolutePath();
//
//    }
//
//    public static String getDiskCacheDir(Context context) {
//        String cachePath = null;
//        if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())
//                || !Environment.isExternalStorageRemovable()) {
//            cachePath = context.getExternalCacheDir().getPath();
//        } else {
//            cachePath = context.getCacheDir().getPath();
//        }
//        return cachePath;
//    }
//}